viewport                                          viewport dimensions
{
    number width                                  scaled based off height, it will differ relative to aspect ratio
    number height                                 always 1080
}

loading                                           load status
{
    boolean loadScreenVisible                     
    boolean downloadingGameState                  if downloading gamestate, workshop downloads (client+server) are complete
    boolean isWorkshopMap                         
    number gameStateAmount                        
    number gameStateTotal                         
    number serverDownloadAmount                   
    number serverDownloadTotal                    
    boolean serverDownloadFinished                
    boolean clientDownloadStarted                 
    boolean clientDownloadFinished                
    number clientDownloadAmount                   
    number clientDownloadTotal                    
}

vote                                              active vote
{
    boolean active                                is there an active vote at the moment?
    string command                                what we're voting for
    boolean passed                                has the vote passed?
    boolean failed                                has the vote failed?
    number timeRemaining                          how long until vote finishes (ms)
    number playerIndex                            index of player who called the vote, (0 => player has disconnected since calling vote!)
    votes                                         
    {
        [1]
        {
            boolean votedYes                      
            boolean voted                         
        }
        ...
    }
}

world                                             world/game status
{
    number gameTimeLimit                          length of game
    number gameTime                               current game time
    boolean timerActive                           
    number timeLimit                              servers sv_timelimit
    number timeLimitRound                         servers sv_timelimit_round
    number gameState                              see GAME_STATE_*
    number overTimeCount                          0 if not overtime
    number gameModeIndex                          
    string mutators                               list of mutators applied on server
    string ruleset                                
    number playerQueueLength                      number of players queued to play, see player.queuePosition
    boolean allowEdit                             is sv_allowedit = 1 on this server
    boolean allowCallVoteMapMode                  is sv_allowcallvotemapmode = 1 on this server
    boolean allowCallVoteMutators                 is sv_allowcallvotemutators = 1 on this server
    string mapWorkshopId                          
    string mapName                                name of map being played
    string mapTitle                               title of map being played
    number matchmakingPlayerCount                 number of matchmaked players that should be in this match
    string matchmakingPlaylistKey                 key of playlist being played
    boolean isMatchmakingLobby                    are we in a lobby server?
    boolean isLightingValid                       is lighting valid
    string hostName                               server hostname
    boolean mapAllowsModeCTF                      
    boolean mapAllowsModeFFA                      
    boolean mapAllowsModeTDM                      
    boolean mapAllowsMode1v1                      
    boolean mapAllowsMode2v2                      
    boolean mapAllowsModeRace                     
    boolean mapAllowsModeTraining                 
    teams                                         
    {
        [1]
        {
            number score                          
            string name                           
        }
        ...
    }
    string serverIp                               server public ip
    number serverPort                             server game port
    number serverHasPassword                      
}

camera                                            
{
    position                                      
    {
        number x                                  
        number y                                  
        number z                                  
    }
    anglesDegrees                                 
    {
        number x                                  
        number y                                  
        number z                                  
    }
}

number clientGameState                            client game state, see STATE_DISCONNECTED, STATE_CONNECTING, STATE_CONNECTED

number epochTime                                  number of seconds that have elapsed since January 1, 1970 (midnight UTC/GMT)

number deltaTime                                  delta time in seconds

number deltaTimeRaw                               delta time in seconds, not scaled by speed of game, use this for menu items etc which aren't related to game in play

number matchmakingTimeSearching                   

boolean showLagIcon                               should show lag icon at this time

boolean canForfeit                                can the local player forfeit at this time?

number playerIndexCameraAttachedTo                index into players, which the camera is currently attached to, 0 => not attached to any player!

number playerIndexLocalPlayer                     

boolean showScores                                whether +showscores is held

boolean connectedToSteam                          did the client successfully connect to steam?

boolean serverConnectedToSteam                    did the server successfully connect to steam?

boolean steamOverlayEnabled                       is the steam overlay attached to the client

number protocolVersion                            network protocol version of client, see servers[1].protocolVersion

string renderAdapter                              name of render adapter used

string soundAdapter                               name of sound adapter used

boolean replayActive                              is a replay playing?

string replayName                                 name of replay playing

number workshopMapsTotal                          total matching maps from query

number workshopMapsPerPage                        maps per page

boolean isGameBorrowed                            is game borrowed, i.e. through steam family share

string steamId                                    steam id of local player, provided as string to preserve precision

boolean assetsChangedRestartRequired              significant asset changes on disk, restart required

message                                           EntityMessage triggered message
{
    string text                                   
}

lighting                                          Baked light status
{
    boolean isValid                               
    boolean isBuilding                            
    number buildPercentage                        
}

nav                                               Baked nav status
{
    boolean isBuilding                            
    number buildPercentage                        
}

turboTime                                         
{
    boolean known                                 
    number epochTimeStart                         
    number epochTimeEnd                           
}

weaponDefinitions                                 weapon definitions
{
    [1]
    {
        string name                               
        number damagePerPellet                    
        number maxAmmo                            
        number lowAmmoWarning                     
        number reloadTime                         reload time in ms
        color                                     
        {
            number r                              
            number g                              
            number b                              
            number a                              
        }
    }
    ...
}

players                                           list of players
{
    [1]
    {
        number index                              index of this player [0, client count)
        boolean connected                         is this player valid
        boolean infoHidden                        is this players info hidden (i.e. is he an enemy)
        string name                               
        number health                             
        number armor                              
        number botSkill                           
        number armorProtection                    0 = green, 1 = yellow, 2 = red
        number weaponIndexSelected                
        number weaponIndexweaponChangingTo        
        boolean hasMega                           
        boolean hasFlag                           
        boolean isReferee                         
        boolean forfeit                           
        number carnageTimer                       
        number resistTimer                        
        number inventoryMelee                     id of the inventory definition this player is holding (see inventoryDefinitions[player.inventoryMelee])
        number inventoryHead                      id of the inventory definition this player is holding (see inventoryDefinitions[player.inventoryHead])
        number inventoryLegs                      id of the inventory definition this player is holding (see inventoryDefinitions[player.inventoryLegs])
        number inventoryArms                      id of the inventory definition this player is holding (see inventoryDefinitions[player.inventoryArms])
        number inventoryTorso                     id of the inventory definition this player is holding (see inventoryDefinitions[player.inventoryTorso])
        number score                              
        number speed                              XZ speed, for UPS meter
        number jumpTimer                          accumulates from 0ms after jump
        boolean raceActive                        is player racing right now
        number raceTimeCurrent                    time into players current race
        number raceTimePrevious                   players previous race time
        position                                  player world position
        {
            number x                              
            number y                              
            number z                              
        }
        velocity                                  player velocity
        {
            number x                              
            number y                              
            number z                              
        }
        anglesDegrees                             player angles, yaw, pitch, roll
        {
            number x                              
            number y                              
            number z                              
        }
        number latency                            ping + client cpu frame overhead
        number packetLoss                         
        number state                              see PLAYER_STATE_*
        number team                               1 = alpha, 2 = zeta
        boolean ready                             
        boolean isDead                            
        number queuePosition                      
        number experienceGained                   Experience gained this match
        number experience                         Experience at start of match
        number mmr                                MMR at start of Match
        number mmrBest                            Best MMR achieved
        number mmrNew                             MMR post match
        string steamId                            
        string country                            two character code country, i.e. 'US', 'FR', 'AU', etc..
        number weaponSelectionIntensity           1 normally, fades to 0 and back to 1 on weapon change, used for smooth UI transitions
        colorIndices                              
        {
            number [1]                            
            number [2]                            
            number [3]                            
        }
        buttons                                   buttons player is pressing
        {
            boolean forward                       
            boolean back                          
            boolean left                          
            boolean right                         
            boolean jump                          
            boolean attack                        
            boolean crouch                        
        }
        weapons                                   
        {
            [1]
            {
                string name                       
                number damagePerPellet            
                number maxAmmo                    
                number lowAmmoWarning             
                color                             
                {
                    number r                      
                    number g                      
                    number b                      
                    number a                      
                }
                number ammo                       
                boolean pickedup                  
                boolean isAllowed                 i.e. is there a weapon mask
            }
            ...
        }
        stats                                     
        {
            number takenRA                        red armors
            number takenYA                        yellow armors
            number takenGA                        green armors
            number takenMega                      mega healths
            number flagsCaptued                   flags captured
            number flagsPickedUp                  flags captured
            number flagsReturned                  flags returned
            number totalKills                     total kills
            number totalDeaths                    total deaths
            number secondsHeldCarnage             seconds holding carnage
            number secondsHeldResist              seconds holding resist
            number totalHealthPickedUp            total health picked up
            number totalDamageReceived            total damage received
            number totalDamageDone                total damage done
            number distanceTravelled              distance travelled to nearest unit (doesn't include vertical velocity - just like UPS meter
        }
        weaponStats                               
        {
            [1]
            {
                number pickedUp                   number of times weapons has been picked up
                number shotsFired                 
                number shotsHit                   
                number kills                      
                number damageDone                 
                number secondsHeld                
            }
            ...
        }
        raceResults                               
        {
            [1]
            {
                number distanceTravelled          distance travelled for the run
                number time                       time of run
                number topSpeed                   top speed
                number avgSpeed                   avg speed
            }
            ...
        }
    }
    ...
}

servers                                           list of all game servers
{
    [1]
    {
        string name                               
        string map                                
        number playerCount                        
        number playerCountMax                     
        string mode                               
        string country                            
        string address                            
        string mutators                           
        number ping                               
        boolean secure                            
        boolean mm                                
        boolean password                          
        boolean dedicated                         
        number protocolVersion                    
        number highestMmr                         
        number spectatorCount                     
        string playlistKey                        
        string steamServerIds                     
    }
    ...
}

serverPlayers                                     list of all players in queued server
{
    [1]
    {
        string name                               
        number timePlayed                         
        number score                              
    }
    ...
}

gamemodes                                         list of all game modes
{
    [1]
    {
        string name                               
        string shortName                          
        boolean hasTeams                          
        boolean hasPickups                        
        boolean canRespawn                        
        boolean canForfeit                        
        boolean requiresReadyUp                   
        number playersRequired                    
        number pointsToWin                        
    }
    ...
}

renderAdapters                                    render adapters supported
{
    [1]
    {
        string name                               
    }
    ...
}

renderModes                                       render modes supported
{
    [1]
    {
        number width                              
        number height                             
        number refreshRate                        
    }
    ...
}

maps                                              list of all maps available
{
    [1]
    {
        string mapName                            legacy name
        string ownerName                          
        string ownerSteamId                       
        string previewImageName                   
        string title                              
        number minPlayers                         
        number maxPlayers                         
        boolean modeCTF                           
        boolean modeFFA                           
        boolean modeTDM                           
        boolean mode1v1                           
        boolean mode2v2                           
        boolean modeRace                          
        boolean hasNav                            
    }
    ...
}

workshopMaps                                      list of maps from current workshop query
{
    [1]
    {
        string ownerName                          
        string ownerSteamId                       
        string previewImageName                   
        string title                              
        number minPlayers                         
        number maxPlayers                         
        boolean modeCTF                           
        boolean modeFFA                           
        boolean modeTDM                           
        boolean mode1v1                           
        boolean mode2v2                           
        boolean modeRace                          
        boolean hasNav                            
        string id                                 workshop published file id, provided as string to preserve precision
        string visibility                         workshop visibility
        number fileSize                           file size
        number previewFileSize                    preview file size
        number votesUp                            
        number votesDown                          
        number score                              
        number epochTimeUpdated                   time last updated, compare to global epochTime
        string workshopTitle                      title from workshop
        string workshopDescription                description from workshop
        string workshopOwnerSteamId               steamid workshop
    }
    ...
}

workshopSpecificMap                               list of map from workshopQuerySpecificMap() call
{
    string ownerName                              
    string ownerSteamId                           
    string previewImageName                       
    string title                                  
    number minPlayers                             
    number maxPlayers                             
    boolean modeCTF                               
    boolean modeFFA                               
    boolean modeTDM                               
    boolean mode1v1                               
    boolean mode2v2                               
    boolean modeRace                              
    boolean hasNav                                
    string id                                     workshop published file id, provided as string to preserve precision
    string visibility                             workshop visibility
    number fileSize                               file size
    number previewFileSize                        preview file size
    number votesUp                                
    number votesDown                              
    number score                                  
    number epochTimeUpdated                       time last updated, compare to global epochTime
    string workshopTitle                          title from workshop
    string workshopDescription                    description from workshop
    string workshopOwnerSteamId                   steamid workshop
}

steamFriends                                      list of steam friends
{
    [1]
    {
        string relationship                       Relationship to player = {None, Blocked, RequestRecipient, Friend, RequestInitiator, Ignored, IgnoredFriend, Suggested}
        string personaState                       State = {Offline, Online, Busy, Away, Snooze, LookingToTrade, LookingToPlay}
        string personaName                        Steam persona name
        string steamId                            
        number steamLevel                         
        string avatarSmall                        name of avatar texture, use with nvgFillImagePattern()
        string avatarMedium                       name of avatar texture, use with nvgFillImagePattern()
        boolean isInGame                          is the user in a game?
        string gameId                             
        string whatDoing                          what player is doing in game
        string serverIpPort                       what server&ip player is connected to
        boolean serverHasPassword                 does the server the players connected to have a password
        boolean serverIsFull                      is the server full
        boolean serverRespondedToPing             did the server respond to a global ping? (i.e. have they forwarded ports(
    }
    ...
}

steamUserStats                                    list of steam user stats
{
    [1]
    {
        number experience                         
        number epochFirstGamePlayedTime           
        number epochLastGamePlayedTime            
        string firstGamePlayedTime                
        string lastGamePlayedTime                 
        number lastBonusXpAwardEpochTime          
        number lastBonusXpAwardMultiplier         
        number bonusExperienceEpochTimeAvailable  when next bonus xp window starts
        number bonusExperienceEpochTimeExpires    when next bonus xp window expires (and returns to 1x)
        number gamesPlayed                        
        number gamesWon                           
        number rageQuits                          
        number damageGiven                        
        number damageReceived                     
        number deaths                             
        number jumpCounter                        
        number distanceTravelled                  
        number airTime                            
        weapons                                   
        {
            [1]
            {
                number kills                      
                number damageDone                 
                number hits                       
                number shots                      
                number heldTime                   
                number averageEffectiveness       
            }
            ...
        }
        awards                                    number of each awards received
        {
            number [0]                            
        }
    }
    ...
}

extendedColors                                    list of all gameColors, see cl_playerColor0/1/2, player.colorIndices
{
}

teamColors                                        list of current teamColors, this can change often if user is using relative team colours
{
}

pickupTimers                                      list of all items in game of which respawns are known
{
    [1]
    {
        number timeUntilRespawn                   
        number type                               
        boolean isActive                          is the pickup currently active?
        boolean isHeldByPlayer                    a player will own this when he's holding it, i.e. mega or a flag
        boolean isHeldByPickup                    another pickup will hold this when we're waiting for that to despawn before spawning, i.e. a flag
        number tokenIndex                         tokenIndex (only relevant if this pickup is a token)
        position                                  world position, only available to spectators
        {
            number x                              
            number y                              
            number z                              
        }
    }
    ...
}

widgets                                           list of all widgets in game, and their properties. to set their properties use the console commands
{
    [1]
    {
        string name                               
        string addonName                          
        offset                                    
        {
            number x                              
            number y                              
        }
        anchor                                    
        {
            number x                              
            number y                              
        }
        number scale                              
        number zIndex                             
        boolean visible                           
        boolean isMenu                            
        boolean canPosition                       
        boolean canHide                           
    }
    ...
}

goals                                             list of all goals in map
{
    [1]
    {
        string message                            
        number sortIndex                          
        boolean achieved                          has this goal been achieved?
    }
    ...
}

log                                               client log
{
    [1]
    {
        number type                               type of log entry, see LOG_TYPE_*
        number age                                time since this event fired
        number id                                 unique id to help distinguish logs
        number chatType                           see LOG_CHATTYPE_*
        string chatPlayer                         name of player
        string chatMessage                        message sent
        number notificationType                   see LOG_NOTIFICATIONTYPE_*
        string notification                       
        number deathDamageType                    damage type that caused the death, see DAMAGE_TYPE_*
        string deathKiller                        
        string deathKilled                        name of killed player
        number deathTeamIndexKiller               
        number deathTeamIndexKilled               
        boolean deathTargetOnGround               
        boolean deathTargetHadFlag                
        boolean deathTargetHadQuad                
        boolean deathTargetHadResist              
        boolean deathTargetHadMega                
        boolean deathSuicide                      
        boolean deathTurret                       
        number deathMeleeDefId                    defId of melee weapon (only relevant if was a melee kill!)
        number raceEvent                          race event type, see RACE_EVENT_*
        string raceName                           
        number racePlayerIndex                    compare with playerIndexCameraAttachedTo
        number raceTime                           
        number ctfEvent                           ctf event type, see CTF_EVENT_*
        string ctfPlayerName                      
        number ctfTeamIndex                       
        number awardType                          award event, see AWARD_*
        number awardPlayerIndex                   compare with playerIndexCameraAttachedTo
        number awardAmount                        
        string dropPlayerName                     
        number dropItemDefId                      
        string receivedPlayerName                 
        number receivedItemDefId                  
        number receivedItemQuantity               
    }
    ...
}

selectedEntities                                  [map editor] selected entities
{
    [1]
    {
        string type                               type of entity, i.e. pickup, playerspawn etc
        number id                                 entity id
        properties                                
        {
        }
    }
    ...
}

selectedBrushes                                   [map editor] selected brushes
{
    [1]
    {
        number id                                 brush id
        materials                                 
        {
        }
    }
    ...
}

addons                                            list of installed addons
{
    [1]
    {
        string name                               Name of addon
        string description                        Description of addon
        string folder                             Folder name addon is in, i.e. game/addons/foldername
        string steamIdOwner                       Owner Steam ID, only works on workshop installed addons
        string workshopId                         
        boolean canUpload                         
        boolean canDownload                       
        boolean errorQueryingWorkshop             
        boolean queuedForDownload                 
        boolean isDownloading                     
        number downloadPercent                    
        string visibility                         workshop visibility
        number fileSize                           workshop fileSize
        number epochTimeUpdatedOnWorkshop         time last updated from workshop
        number epochTimeUpdatedOnDisk             time last updated from disk
    }
    ...
}

replay                                            replay vars
{
    number timecodeStart                          
    number timecodeEnd                            
    number timecodeCurrent                        
    boolean isActive                              is a replay active
    boolean isExporting                           are we currently exporting?
    boolean isLoading                             are we still loading?
    boolean isEditing                             are we editing?
    keys                                          table of all keyframes
    {
        [1]
        {
            number timecode                       
            position                              
            {
                number x                          
                number y                          
                number z                          
            }
            string positionLerp                   lerp style
            anglesDegrees                         
            {
                number x                          
                number y                          
                number z                          
            }
            string angleLerp                      lerp style
            number entityIdAttachedTo             entity id we're attached to (i.e. a player), -1 => not attached
            number entityIdLookingTowards         entity id we're looking towards (i.e. a player), -1 => not looking towards
            string entityNameAttachedTo           entity name we're attached to (i.e. a player), -1 => not attached
            string entityNameLookingTowards       entity name we're looking towards (i.e. a player), -1 => not looking towards
            number fov                            fov, 0 => use default
            string fovLerp                        lerp style
        }
        ...
    }
}

